package com.hclc.util.distance;

/**
 * 距离计算util
 * @ClassName DistanceUtil
 * @Author: yurj
 * @Mail：1638234804@qq.com
 * @Date: Create in 9:40 2019-11-2
 * @version: 1.0
 */
public class DistanceUtil {

    /**
     * 计算两个经纬度之间的距离
     * @author
     *
     */

        private static final double EARTH_RADIUS = 6378.137;//地球半径,单位千米
        private static double rad(double d)
        {
            return d * Math.PI / 180.0;
        }

        /**
         *
         * @param lng1 第一个经度
         * @param lat1 第一个纬度
         * @param lng2 第二个经度
         * @param lat2 第二个纬度
         * @return 两个经纬度的距离
         */
        public static double getDistance(double lng1,double lat1,double lng2,double lat2)
        {
            double radLat1 = rad(lat1);
            double radLat2 = rad(lat2);
            double a = radLat1 - radLat2;
            double b = rad(lng1) - rad(lng2);

            double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
                    Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
            s = s * EARTH_RADIUS;
            s = Double.parseDouble(String.format("%.2f", s));//保留两位
            //s = Math.round(s * 10000) / 10000;//取整
            return s;

        }

        public static void main(String[] args)
        {
            System.out.println(DistanceUtil.getDistance(104.072503 ,30.718246, 104.072503, 30.718357));
        }



}
